In a virtualization environment, network resources managed by a host operating system are virtualized and shared with one or more virtual machines. For instance, in a host system there may be a physical network resource, such as a network interface, that provides communication between the virtual machines and external communication networks. The sharing of the network resource is critical to the performance, security, and efficiency of the virtual network supported by the host system.
Each of the virtual machines includes a virtualized network interface that gives the operating system of the virtual machine access to the physical network interface of the host system. There are different technologies for virtualizing the network interface in a traditional system. One example includes a hardware emulation of a network interface card (NIC) at the operating system of the virtual machine. This includes emulation of an existing physical NIC at the virtual machine to handle network packets received from and delivered to the virtual machine. In another example, a para-virtualization driver includes a front-end/back-end model that combined provide the functionality of a virtual NIC to the virtual machine. In each of the traditional mechanisms for interfacing, the virtualized network interface communicates with a back-end implementation, such as a software bridge or network address translator, of the host system that facilitates sharing of the physical network interface.
The traditional mechanism for providing virtualized network interfacing for sharing a network resource of a host system are strictly device-oriented. That is, the existing virtualized network interfacing techniques provide for the emulation and implementation of the virtual NICs in order to provide virtual links between the virtual devices and the physical network resource.
However, while these traditional networking solutions provide for the sharing of the physical network resource, they do not address the issue of on-demand service requirements. In particular, each of the traditional network interfacing solutions is unaware of the underlying physical network resource, and as such, are unable to meet and provide quality of service (QoS) requirements for the virtual machines. As an example, a host system may include a network resource providing 1 Gigabyte/per second (Gbps) of bandwidth capability. In addition, the host system may support a number of virtual machines, each of which requires a certain bandwidth capability. As a drawback, the traditional networking solutions are unable to provide by themselves any distribution of bandwidth between the three virtual machines to meet individual and/or collective QoS requirements. As such, a single virtual machine may lock up the entire bandwidth for its own use without any consideration of the bandwidth requirements of the other remaining virtual machines.
This problem is further highlighted when migrating a virtual machine from one host system to a destination host system. In particular, the virtual machine is associated with a predefined QoS requirement, such as a predefined bandwidth capability. This QoS requirement for the virtual machine is required on whichever host system the virtual machine resides. However, when the virtual machine is migrated to the destination host system, because the traditional networking solutions for providing virtualized network interfacing is device oriented, the QoS for the migrated virtual machine is not implemented within the destination host system. This occurs even though the QoS policy may also be migrated along with the associated virtual machine. That is, the newly migrated virtual machine is unable to have its bandwidth capability metrics met, especially if the bandwidth capability for the host system has already been allocated.